package com.kazusa.myservlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/*
* request 作用域
* 通过该对象可以在一个请求中传递数据，作用范围:在一次请求中有效，即服务器跳转有效（请求转发跳转时有效）
*   //设置域对象内容
*   request.setAttributes(String name,String value);
*   //获取域对象内容
*   request.getAttributes(String name);
*   //移除域对象内容
* request.removeAttributes(String name);
*
* 一般用于后台服务器想传递数据到页面，就把数据存在request作用域中，然后在页面中通过request对象获取数据
* request作用域对象中的数据只在一个请求中有效，则经过请求转发，request中的数据域依然存在，则在请求转发的过程中可以通过request来传输/共享数据
* */

@WebServlet("/requestScope")
public class RequestScope extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("RequestScope servlet");

        //设置域对象内容
        request.setAttribute("name","admin");
        request.setAttribute("age",18);
        List<String> list = new ArrayList<>();
        list.add("apple");
        list.add("orange");
        request.setAttribute("list",list);

        /*//请求转发跳转到tool
        request.getRequestDispatcher("requestScopeTool").forward(request,response);*/

        //请求转发到jsp并且通过域对象传递数据
        request.getRequestDispatcher("index.jsp").forward(request,response);
    }
}
